package chapter1_4_join;

/**
 * 在项目实践中经常会遇到一个场景，就是需要等待某几件事情完成后才能继续往下执
 * 行， 比如多个线程加载资源， 需要等待多个线程全部加载完毕再汇总处理。Thread 类中有
 * 一个join 方法就可以做这个事情，前面介绍的等待通知方法是Obj ect 类中的方法， 而join
 * 方法则是Thread 类直接提供的。j o in 是无参且返回值为void 的方法
 *
 * @author huayuhao
 * @date 2020/12/15 16:17
 */
public class Join1Test {

    public static void main(String[] args) throws InterruptedException {

        Thread A = new Thread(() -> {
            try {
                System.out.println("A 开始睡1s");
                Thread.sleep(1000);
                System.out.println("A 醒了!");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        Thread B = new Thread(() -> {
            try {
                System.out.println("B 开始睡1s");
                Thread.sleep(1000);
                System.out.println("B 醒了!");
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        System.out.println("接下来主线程等待A 和 B完成");

        A.start();
        A.join();
        System.out.println("接下来等待B完成");
        B.start();
        B.join();
        System.out.println("main over");
    }
}
